解决freeswitch ICE 获取RTP地址时间过长的问题

您所在的位置:网站首页 sipjs codec 解决freeswitch ICE 获取RTP地址时间过长的问题

解决freeswitch ICE 获取RTP地址时间过长的问题

#解决freeswitch ICE 获取RTP地址时间过长的问题| 来源: 网络整理| 查看: 265

一. 场景

公网部署一台FS SIP服务器,web端通过sipjs连接FS服务器(ws/wss连接)

 二. ICE连通性检查:

fs和web客户端的ICE地址进行轮询检查连通性;

由于该场景中web处在内网中,所以连通性检查一个也过不了,反而有明显的耗时。

三. 解决方案:

由于FS处在公网中,FS的 rtp端口是能正常访问,FS能收到web端的stun消息,而这个stun消息就是由web端的RTP端口发出来的,所以FS端可以直接将web端的stun消息的公网地址设置为RTP的公网地址。使用这个地址进行RTP通信。

修改FS代码源码,增加一个ICE联通检查通道变量,ice_immediately。设置该通道变量,这不进行ICE的联通检查

freeswitch 1.10.1 版本,其他版本对照更改

1.  ​​​​​​src/include/switch_types.h

typedef enum { ICE_GOOGLE_JINGLE = (1 dtls->state != DS_READY) || !ice->ready || !ice->rready) && rtp_session->wrong_addrs > 2 && rtp_session->ice_adj == 0) { do_adj++; rtp_session->ice_adj = 1; rtp_session->wrong_addrs = 0; //- } else if (rtp_session->wrong_addrs > 10 || elapsed >= 10000) { + } else if ((ice->type & ICE_IMMEDIATELY) || rtp_session->wrong_addrs > 10 || elapsed >= 10000) { // [ add ICE_IMMEDIATELY, when wrong address , Auto change the from adderss 20200609] by aominle do_adj++; }

四。用法

在发起呼叫时增加通道变量 {ice_immediately=true}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3